package ln.javatest.day15.demo01;
/*
练习：序列化集合
    当我们想在文件中保存多个对象的时候
    可以吧多个对象存储到一个集合中
    对集合进行序列化和反序列化
分析：
    1.定义一个存储Person对象的ArrayList集合
    2.往ArrayList集合中存储Person对象
    3.创建一个序列化流ObjectOutputStream对象
    4.使用ObjectOutputStream对象中的方法writeObject，对集合进行序列化
    5.创建一个反序列化ObjectInputStream对象
    6.使用ObjectInputStream对象中的方法readObject读取文件中保存的集合
    7.把Object类型的集合转换为ArrayList类型
    8.遍历ArrayList集合
    9.释放资源
*/

import java.io.*;
import java.util.ArrayList;

public class Test {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //    1.定义一个存储Person对象的ArrayList集合
        ArrayList<Person> list = new ArrayList<>();
        //    2.往ArrayList集合中存储Person对象
        list.add(new Person("王嘉尔",18));
        list.add(new Person("易烊千玺",20));
        list.add(new Person("熊丰",32));
        //    3.创建一个序列化流ObjectOutputStream对象
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\桌面\\Java笔记\\1.txt"));
        //    4.使用ObjectOutputStream对象中的方法writeObject，对集合进行序列化
        oos.writeObject(list);
        //    5.创建一个反序列化ObjectInputStream对象
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\桌面\\Java笔记\\1.txt"));
        //    6.使用ObjectInputStream对象中的方法readObject读取文件中保存的集合
        Object o = ois.readObject();
        //    7.把Object类型的集合转换为ArrayList类型
        ArrayList<Person> p = (ArrayList<Person>) o;
        //    8.遍历ArrayList集合
        for (Person p1 : p) {
            System.out.println(p1);
        }
        //    9.释放资源
        oos.close();
        ois.close();
    }
}
